package xxl.signals.base.natives.sets 
{
	import flash.display.InteractiveObject;
	import flash.events.Event;
	import flash.events.FocusEvent;
	import flash.events.KeyboardEvent;
	import flash.events.MouseEvent;
	import flash.events.TextEvent;
	import xxl.signals.core.natives.INativeDispatcher;
	/**
	 * ...
	 * @author XXL
	 */
	public class InteractiveObjectSignalSet extends DisplayObjectSignalSet 
	{
		
		public function InteractiveObjectSignalSet(target:InteractiveObject, maybeRepeat:Boolean = false) 
		{
			super(target, maybeRepeat);
		}
		
		/**
		 * 用户在同一 InteractiveObject 上按下并释放用户指针设备的主按钮时调度。
		 */
		public function get click():INativeDispatcher
		{
			return getNativeSignal(MouseEvent.CLICK, MouseEvent);
		}
		
		/**
		 * 如果 InteractiveObject 的 doubleClickEnabled 标志设置为 true，当用户在该对象上快速连续按下两次并释放指针设备的主按钮时调度。
		 */
		public function get doubleClick():INativeDispatcher
		{
			return getNativeSignal(MouseEvent.DOUBLE_CLICK, MouseEvent);
		}
		
		/**
		 * 显示对象获得焦点后调度。
		 */
		public function get focusIn():INativeDispatcher
		{
			return getNativeSignal(FocusEvent.FOCUS_IN, FocusEvent);
		}
		
		/**
		 * 显示对象失去焦点后调度。
		 */
		public function get focusOut():INativeDispatcher
		{
			return getNativeSignal(FocusEvent.FOCUS_OUT, FocusEvent);
		}
		
		/**
		 * 用户按下某个键时调度。
		 */
		public function get keyDown():INativeDispatcher
		{
			return getNativeSignal(KeyboardEvent.KEY_DOWN, KeyboardEvent);
		}
		
		/**
		 * 用户尝试使用键盘导航更改焦点时调度。
		 */
		public function get keyFocusChange():INativeDispatcher
		{
			return getNativeSignal(FocusEvent.KEY_FOCUS_CHANGE, FocusEvent);
		}
		
		/**
		 * 用户释放某个键时调度。
		 */
		public function get keyUp():INativeDispatcher
		{
			return getNativeSignal(KeyboardEvent.KEY_UP, KeyboardEvent);
		}
		
		/**
		 * 在 Flash Player 窗口中，用户在 InteractiveObject 实例上按下指针设备按钮时调度。
		 */
		public function get mouseDown():INativeDispatcher
		{
			return getNativeSignal(MouseEvent.MOUSE_DOWN, MouseEvent);
		}
		
		/**
		 * 用户尝试使用指针设备更改焦点时调度。
		 */
		public function get mouseFocusChange():INativeDispatcher
		{
			return getNativeSignal(FocusEvent.MOUSE_FOCUS_CHANGE, FocusEvent);
		}
		
		/**
		 * 用户移动 InteractiveObject 上的指针设备时调度。
		 */
		public function get mouseMove():INativeDispatcher
		{
			return getNativeSignal(MouseEvent.MOUSE_MOVE, MouseEvent);
		}
		
		/**
		 * 用户将指针设备从 InteractiveObject 实例上移开时调度。
		 */
		public function get mouseOut():INativeDispatcher
		{
			return getNativeSignal(MouseEvent.MOUSE_OUT, MouseEvent);
		}
		
		/**
		 * 在 Flash Player 窗口中，用户将指针设备移动到 InteractiveObject 实例上时调度。
		 */
		public function get mouseOver():INativeDispatcher
		{
			return getNativeSignal(MouseEvent.MOUSE_OVER, MouseEvent);
		}
		
		/**
		 * 在 Flash Player 窗口中，用户在 InteractiveObject 实例上释放指针设备按钮时调度。
		 */
		public function get mouseUp():INativeDispatcher
		{
			return getNativeSignal(MouseEvent.MOUSE_UP, MouseEvent);
		}
		
		/**
		 * 在 Flash Player 窗口中，鼠标滚轮滚动到 InteractiveObject 实例上时调度。
		 */
		public function get mouseWheel():INativeDispatcher
		{
			return getNativeSignal(MouseEvent.MOUSE_WHEEL, MouseEvent);
		}
		
		/**
		 * 用户将指针设备从 InteractiveObject 实例上移开时调度。
		 */
		public function get rollOut():INativeDispatcher
		{
			return getNativeSignal(MouseEvent.ROLL_OUT, MouseEvent);
		}
		
		/**
		 * 用户将指针设备移动到 InteractiveObject 实例上时调度。
		 */
		public function get rollOver():INativeDispatcher
		{
			return getNativeSignal(MouseEvent.ROLL_OVER, MouseEvent);
		}
		
		/**
		 * 对象的 tabChildren 标志值发生更改时调度。
		 */
		public function get tabChildrenChange():INativeDispatcher
		{
			return getNativeSignal(Event.TAB_CHILDREN_CHANGE);
		}
		
		/**
		 * 对象的 tabEnabled 标志发生更改时调度。
		 */
		public function get tabEnabledChange():INativeDispatcher
		{
			return getNativeSignal(Event.TAB_ENABLED_CHANGE);
		}
		
		/**
		 * 对象的 tabIndex 属性值发生更改时调度。
		 */
		public function get tabIndexChange():INativeDispatcher
		{
			return getNativeSignal(Event.TAB_INDEX_CHANGE);
		}
		
		public function get textInput():INativeDispatcher
		{
			return getNativeSignal(TextEvent.TEXT_INPUT);
		}
	}

}